// pages/user/index.ts
import userBaseInfoState from '../../stores/userBaseInfo';
import { getPatientBaseObject } from '../../utils/api/patientBase';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: <PatientBaseEntity>{
      patientName: '加载中...',
      patientUid: '',
      birthday: '',
      phoneNumber: '',
    },
    loading: true,
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad() {
    this.getUserInfo();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 每次显示时刷新用户信息
    this.getUserInfo();
  },

  /**
   * 获取用户基本信息
   */
  getUserInfo() {
    const openid = wx.getStorageSync("openid");
    const patientUid = wx.getStorageSync("patientUid");
    const phoneNumber = wx.getStorageSync("phoneNumber");
    
    console.log('========== 我的页面 - 获取用户信息 ==========');
    console.log('当前openid:', openid);
    console.log('当前patientUid:', patientUid);
    console.log('当前phoneNumber:', phoneNumber);
    
    // 优先使用patientUid查询（手机号密码登录）
    // 其次使用phoneNumber查询
    // 最后使用wxUid查询（微信授权登录）
    let data: any = {};
    
    if (patientUid) {
      data = { patientUid: patientUid };
      console.log('使用patientUid查询用户信息');
    } else if (phoneNumber) {
      data = { phoneNumber: phoneNumber };
      console.log('使用phoneNumber查询用户信息');
    } else if (openid) {
      data = { wxUid: openid };
      console.log('使用wxUid查询用户信息');
    } else {
      console.error('没有任何登录信息，无法获取用户信息');
      wx.showModal({
        title: '提示',
        content: '登录信息已过期，请重新登录',
        success: (res) => {
          if (res.confirm) {
            wx.reLaunch({
              url: '/pages/login/index'
            });
          }
        }
      });
      return;
    }
    
    getPatientBaseObject(data).then((res: any) => {
      console.log('获取用户信息API响应:', res);
      if (res.data && res.data.length > 0) {
        const userInfo = res.data[0];
        console.log('用户信息详情:');
        console.log('- 姓名:', userInfo.patientName);
        console.log('- 手机号:', userInfo.phoneNumber);
        console.log('- 患者ID:', userInfo.patientUid);
        console.log('- 性别:', userInfo.sex);
        console.log('- 生日:', userInfo.birthday);
        console.log('==========================================');
        
        this.setData({
          userInfo: userInfo,
          loading: false,
        });
        // 更新全局状态
        userBaseInfoState.onChangeData(userInfo);
      } else {
        console.warn('未找到用户信息，返回数据为空');
        wx.showToast({
          title: '未找到用户信息',
          icon: 'none',
        });
      }
    }).catch((err: any) => {
      console.error("获取用户信息失败", err);
      this.setData({
        loading: false,
      });
      wx.showToast({
        title: '获取用户信息失败',
        icon: 'none',
      });
    });
  },

  /**
   * 退出登录
   */
  onLogout() {
    wx.showModal({
      title: '提示',
      content: '确定要退出登录吗？',
      success: (res) => {
        if (res.confirm) {
          // 清除所有缓存
          wx.clearStorageSync();
          
          wx.showToast({
            title: '已退出登录',
            icon: 'success',
            duration: 1500,
          });
          
          // 延迟跳转到登录页
          setTimeout(() => {
            wx.reLaunch({
              url: '/pages/login/index'
            });
          }, 1500);
        }
      }
    });
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})